package Observer;


/**
 * 当被观察者的状态发生改变，他会通知所有的观察者处理消息
 * 他们能及时作出响应，也被成为 发布-订阅
 *
 */

/**
 * 报纸和报纸的订阅者为例，假设你在订阅一份报纸，每天早上送到你门口。
 * 你订阅的这份报纸就是被观察者。你和其他的订阅者是观察者。当报纸被送到你门口时，
 * 它会自动通知所有的订阅者，让他们知道这份报纸已经到了。
 */

public class Client {

    public static void main(String[] args) {

        //被观察者
        Newspaper newspaper = new NewsPaperImp();

        //观察者
        Observer observer1 = new ObserverImp("老张");
        Observer observer2 = new ObserverImp("老王");

        //被观察者与观察者订阅，将观察者绑定到被观察者
        newspaper.registerObServer(observer1);
        newspaper.registerObServer(observer2);

        //发通知
        newspaper.notifyObserver("今天的报纸到了");

        //取消订阅
        newspaper.unRegisterObserver(observer2);
        newspaper.notifyObserver("第二天的报纸到了");

    }
}
